#!/bin/bash
# 
#set -x
##### 入参判断
# Gather command line options
for i in "$@"; do 
  case $i in 
    -skip-code|--skip-code) # Skip download code
    SKIPCODE=NO
    shift
    ;;
    -with-build|--with-build) # build
    WITHBUILD=YES
    ;;
    *)
    #TODO Maybe define a help section?
    ;;
  esac
done
baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
# 初始化环境变量
source ${baseDirForScriptSelf}/source.sh

# 必要检查
source ${baseDirForScriptSelf}/check.sh

# 用户注意事项
source ${baseDirForScriptSelf}/notice.sh

# 检查log文件是否存在,如果存在重命名
if [ -f ${baseDirForScriptSelf}/init_run.log ];then
    mv ${baseDirForScriptSelf}/init_run.log init_run_`date '+%Y-%m-%d_%H-%M-%S'`.log
fi

# 设置Ubuntu的安装源,预置阿里云源,如需要修改,请编辑apt_get.sh; 如不需要设置,请注释
bash ${baseDirForScriptSelf}/apt_get.sh
if [ $? -gt 0 ];then exit 1;fi

# 设置pip安装源,预置阿里云源,如需要修改,请编辑pip.sh; 如不需要设置,请注释
bash ${baseDirForScriptSelf}/pip.sh

# 设置代理,包含http_proxy,https_proxy,git proxy配置;如不需要proxy,请注释; 如果需要使用,请同时修改 proxy.sh 脚本
source ${baseDirForScriptSelf}/proxy.sh
if [ $? -gt 0 ];then exit 1;fi

# 安装apt-get 依赖包
source ${baseDirForScriptSelf}/apt_get_install.sh
if [ $? -gt 0 ];then exit 1;fi

# 安装python以及pip相关依赖
source ${baseDirForScriptSelf}/pip_install.sh
if [ $? -gt 0 ];then exit 1;fi

# 安装gn
echo 'Install gn'
bash ${baseDirForScriptSelf}/install_gn.sh
if [ $? -gt 0 ];then exit 1;fi

# 安装llvm
echo 'Install llvm'
bash ${baseDirForScriptSelf}/install_llvm.sh
if [ $? -gt 0 ];then exit 1;fi

# 安装ninja
echo 'Install ninja'
bash ${baseDirForScriptSelf}/install_ninja.sh
if [ $? -gt 0 ];then exit 1;fi

# 安装gcc_riscv32
echo 'Install gcc_riscv32'
bash ${baseDirForScriptSelf}/install_gcc_riscv32.sh
if [ $? -gt 0 ];then exit 1;fi

# 切换shell为bash,此处需要手工选择
for ((i=5;i>0;i--));
do
    echo "$i,切换bash为默认shell,请在弹出窗口选择NO! | Switching shell to bash. Please select NO!"
    sleep 1
done
echo ' '
echo '''Switching shell to bash. Please select NO;

Please press Enter to continue'''
read
sudo dpkg-reconfigure dash

# 下载源码
echo '--------------------------------------------'
echo ' '
echo -e "\033[1;42;37m5s\033[0m 后开始下载最新代码"
echo ' '
echo '--------------------------------------------'
echo ' '
echo '''请注意,脚本默认强制清理工作目录,执行 git reset --hard;git clean -fd, 这会导致本地工作目录所有修改丢失,请提前保存数据'''
echo '''请注意,脚本默认强制清理工作目录,执行 git reset --hard;git clean -fd, 这会导致本地工作目录所有修改丢失,请提前保存数据'''
echo '''请注意,脚本默认强制清理工作目录,执行 git reset --hard;git clean -fd, 这会导致本地工作目录所有修改丢失,请提前保存数据'''
echo '''确认以上信息后请按Enter确认:'''
read
# 如果不下载代码, 安装hb,执行prebuilts脚本都跳过
if [ "${SKIPCODE}" != "NO" ];then
    bash ${baseDirForScriptSelf}/download_code.sh
    if [ $? -gt 0 ];then exit 1;fi
    # 安装hb
    echo 'Install hb'
    bash ${baseDirForScriptSelf}/install_hb.sh
    if [ $? -gt 0 ];then exit 1;fi
    # 安装prebuilts
    cd ${work_dir}/OpenHarmony
    ### 在npm config set registry前一行强制插入忽略npm ssl
    npm_config_set_registry_linenum=`cat build/prebuilts_download.sh |grep -n ' registry '|awk -F ':' '{print $1}'|head -n1`
    sed  -i "${npm_config_set_registry_linenum} i\    npm config set strict-ssl false"  build/prebuilts_download.sh
    ## 内网使用内部镜像
    if [ "${is_huawei}" == "true" ];then
        npm_config_set_registry_linenum=`cat build/prebuilts_download.sh |grep -n ' registry '|awk -F ':' '{print $1}'|head -n1`
        npm_config_set_registry_linenum=$((npm_config_set_registry_linenum+1))
        sed  -i "${npm_config_set_registry_linenum} i\    npm config set registry http://mirrors.tools.huawei.com/npm/"  build/prebuilts_download.sh
    fi
    sudo bash build/prebuilts_download.sh
    if [ $? -gt 0 ];then exit 1;fi
else
    # 不下载代码,强制不编译
    WITHBUILD=NO
    # 不下载代码,进行友好提示
    echo """您使用了--skip-code跳过了代码下载,以下环境未配置,请您注意:
1. hb未安装,如果需要手工安装请cd到代码根目录执行: 
    a) 安装:python3.8 -m pip install --user ohos-build
    b) 配置环境变量:编辑~/.bashrc文件,在最后一行增加 export PATH=~/.local/bin:\$PATH
2. prebuilts下载脚本未执行,如果需要手工下载请cd到代码根目录执行:sudo bash build/prebuilts_download.sh
    """
fi
# /etc/profile 加到~/.bashrc,默认初始化环境
if [ -f ~/bashrc ];then
    is_source_profile_exist=`cat ~/.bashrc|grep source|grep '/etc/profile'`
    if [ "X${is_source_profile_exist}" == "X" ];then
        echo 'source /etc/profile'>>~/.bashrc
    fi
else 
    echo 'source /etc/profile'>>~/.bashrc
    chmod 644 ~/.bashrc
fi


if [ "${WITHBUILD}" == "YES" ];then
    # build all,可以根据需求,注释不需要的编译命令
    python3.8 build.py -p wifiiot_hispark_pegasus@hisilicon -f
    if [ $? -gt 0 ];then exit 1;fi
    #python3.8 build.py -p ipcamera_hispark_taurus@hisilicon -f
    if [ $? -gt 0 ];then exit 1;fi
    #python3.8 build.py -p ipcamera_hispark_taurus_linux@hisilicon -f
    if [ $? -gt 0 ];then exit 1;fi
    #python3.8 build.py -p ipcamera_hispark_aries@hisilicon -f 
    if [ $? -gt 0 ];then exit 1;fi
fi

# 因为默认环境变量未生效,提醒用户使用source /etc/profile生效环境变量
echo ' '
echo """恭喜您, OpenHarmony环境搭建完成, 您可以退出当前终端, 重新进入加载新的环境变量
或者您可以在当前终端执行 source ~/.bashrc 立即生效
感谢您的使用"""